home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / program / misc / muint_pr.lha / Figlet / F.Figlet.doc < prev    next >
Text File  |  1995-06-24  |  36KB  |  858 lines

  1. About Figlet:
  2. ^^^^^^^^^^^^^
  3. This is a new port of Figlet for the Amiga. The original source
  4. code was not modified in any way. The source was simply re-compiled
  5. to give the ability to redirect the output from stdout to a file.
  6.  
  7. The default font directory is libs:figletfonts. Establish this 
  8. directory and copy your fonts into it.
  9.  
  10. Place figlet in the path. 
  11.  
  12. About the GUI:
  13. ^^^^^^^^^^^^^^
  14. MUI is required, as well as several executables located in the 
  15. directory. Keep all of these files together. To start the GUI, 
  16. enter EXECUTE Figlet.def.
  17.  
  18. This will define the GUI and call MUInt to display it.
  19.  
  20. You will be asked what your text editor is. The path/name will
  21. be recorded in sys:prefs/env-archive. You will only have to 
  22. enter you editor's name once.
  23.  
  24. If you have not placed your fonts in libs:figletfonts, you will
  25. be asked if you want this done for you. If you don't, the program
  26. will look for the fonts in /fonts.
  27.  
  28. Enter the text you want displayed in Figlet format in the string 
  29. gadget. To see the text, press the DISPLAY button. To send the 
  30. text to your editor, press the SEND TO EDITOR button.
  31.  
  32. System Requirements:
  33. ^^^^^^^^^^^^^^^^^^^^
  34. Any Amiga
  35. WB2.04 and up
  36. Reqtools.lib
  37. muimaster.library v8 and up
  38.  
  39. Ported by BOTH Software:  colin@connectnet.com  will@crl.com
  40. Freely distributable
  41. -----------------------------------------------------------------
  42.  
  43. FIGLET(6)                                               FIGLET(6)
  44.  
  45.  
  46. NAME
  47.        figlet  -  print  in  large characters made up of ordinary
  48.        screen characters
  49.  
  50.  
  51. SYNOPSIS
  52.        figlet [ -clnprtvxDELNRX ] [ -d fontdirectory ]
  53.               [ -f fontfile ] [ -m smushmode ] [ -w outputwidth ]
  54.               [ -C controlfile ] [ -I infocode ]
  55.  
  56.  
  57. DESCRIPTION
  58.        figlet  prints its input using large characters made up of
  59.        ordinary screen characters.  figlet  output  is  generally
  60.        reminiscent of the sort of ``signatures'' many people like
  61.        to put at the end of e-mail and UseNet  messages.   It  is
  62.        also  reminiscent  of  the output of some banner programs,
  63.        although it is oriented normally, not sideways.
  64.  
  65.        figlet can print in a variety of fonts, both left-to-right
  66.        and  right-to-left,  with  adjacent  characters kerned and
  67.        ``smushed'' together in various ways.   figlet  fonts  are
  68.        stored  in  separate files, which can be identified by the
  69.        suffix ``.flf''.  Most figlet font files will be stored in
  70.        figlet's default font directory.
  71.  
  72.        figlet  can  also  use ``control files'', which tell it to
  73.        map certain input characters to certain other  characters,
  74.        similar  to  the  Unix  tr  command.  Control files can be
  75.        identified by the suffix ``.flc''.   Most  figlet  control
  76.        files will be stored in figlet's default font directory.
  77.  
  78.  
  79. OTHER FONTS & MAILING LIST
  80.        As of this writing you can get many fonts which are not in
  81.        the  basic  figlet   package   by   anonymous   FTP   from
  82.        ftp.isu.edu:pub/figlet/fonts.       ftp.isu.edu:pub/figlet
  83.        should also contain the latest version of figlet and other
  84.        utilities related to figlet.  Of special interest are non-
  85.        Roman fonts.  As of this writing,  there  are  Hebrew  and
  86.        Cyrillic (Russian) fonts; more are expected.
  87.  
  88.        We  run  an  e-mail  list dedicated to figlet software and
  89.        font announcements, as well as  general  discussion  about
  90.        figlet.  If you would like to be on this list, send e-mail
  91.        to listserv@vmd.cso.uiuc.edu with the message body
  92.  
  93.               subscribe figlet-l YOUR NAME
  94.  
  95.        where YOUR NAME should be replaced with  your  name.   For
  96.        those  who don't want to be bothered with the discussions,
  97.        the list can be configured so that you only  see  software
  98.        update notices, or only software and font announcements.
  99.  
  100. USAGE
  101.        Just start up figlet (type ``figlet'') and then type what-
  102.        ever you want.  Alternatively, pipe a file or  the  output
  103.        of another command through figlet.  See EXAMPLES for other
  104.        things to do.
  105.  
  106.  
  107. OPTIONS
  108.        figlet reads command line options from left to right,  and
  109.        only  the  last  option  that  affects a parameter has any
  110.        effect.  Every option has an inverse, so that,  for  exam-
  111.        ple, if figlet is customized with a C-shell alias, all the
  112.        options are still available.
  113.  
  114.        Commonly-used options are -f, -c, -m0, -t, -p and -v.
  115.  
  116.  
  117.        -f fontfile
  118.               Select the font.  The .flf suffix may be  left  off
  119.               of  fontfile,  in  which  case figlet automatically
  120.               appends it.  figlet looks for the file first in the
  121.               default  font  directory  and  then  in the current
  122.               directory, or, if fontfile  was  given  as  a  full
  123.               pathname, in the given directory.  If the -f option
  124.               is not specified, figlet uses  the  font  that  was
  125.               specified  when it was compiled.  To find out which
  126.               font this is, use the -I3 option.
  127.  
  128.  
  129.        -d fontdirectory
  130.               Change the default font  directory.   figlet  looks
  131.               for  fonts  first in the default directory and then
  132.               in the current directory.  If the -d option is  not
  133.               specified, figlet uses the directory that was spec-
  134.               ified when it was  compiled.   To  find  out  which
  135.               directory this is, use the -I2 option.
  136.  
  137.  
  138.        -c
  139.        -l
  140.        -r
  141.        -x     These  options  handle  the justification of figlet
  142.               output.  -c centers the  output  horizontally.   -l
  143.               makes  the  output  flush-left.  -r makes it flush-
  144.               right.  -x (default) sets the justification accord-
  145.               ing  to whether left-to-right or right-to-left text
  146.               is selected.  Left-to-right  text  will  be  flush-
  147.               left, while right-to-left text will be flush-right.
  148.               (Left-to-right versus right-to-left  text  is  con-
  149.               trolled by -L, -R and -X.)
  150.  
  151.  
  152.        -t
  153.        -w outputwidth
  154.               These  options  control  the  outputwidth,  or  the
  155.               screen width figlet  assumes  when  formatting  its
  156.               output.   figlet  uses the outputwidth to determine
  157.               when to break lines and how to center  the  output.
  158.               Normally,  figlet assumes 80 columns so that people
  159.               with wide terminals won't annoy the people they  e-
  160.               mail  figlet output to.  -t sets the outputwidth to
  161.               the terminal width.  If the terminal  width  cannot
  162.               be   determined,   the   previous   outputwidth  is
  163.               retained.  -w sets the  outputwidth  to  the  given
  164.               integer.   An  outputwidth  of 1 is a special value
  165.               that tells figlet to print each  non-space  charac-
  166.               ter, in its entirety, on a separate line, no matter
  167.               how wide it is.
  168.  
  169.  
  170.        -p
  171.        -n     These options control how figlet handles  newlines.
  172.               -p puts figlet into ``paragraph mode'', which elim-
  173.               inates some unnecessary line breaks when  piping  a
  174.               multi-line file through figlet.  In paragraph mode,
  175.               figlet treats line breaks within a paragraph as  if
  176.               they  were  merely blanks between words.  (Specifi-
  177.               cally, -p causes  figlet  to  convert  any  newline
  178.               which is not preceded by a newline and not followed
  179.               by a space character into a blank.)  -n puts figlet
  180.               back  to  normal  (default), in which every newline
  181.               figlet reads causes it to produce a line break.
  182.  
  183.  
  184.        -D
  185.        -E     -D switches to the German (Deutsch) character  set.
  186.               Turns  `[',  `\'  and `]' into umlauted A, O and U,
  187.               respectively.  `{',  `|'  and  `}'  turn  into  the
  188.               respective lower case versions of these.  `~' turns
  189.               into s-z.  (Of course, all this  assumes  the  font
  190.               author  has placed German characters in these posi-
  191.               tions in the font file.  Many font authors do not.)
  192.               -E  switches  back  to English (default), i.e., the
  193.               standard ASCII character set.
  194.  
  195.  
  196.        -C controlfile
  197.        -N     These options deal  with  figlet  controlfiles.   A
  198.               controlfile is a file containing a list of commands
  199.               that figlet executes each time it reads  a  charac-
  200.               ter.   These commands can map certain input charac-
  201.               ters to other characters, similar to  the  Unix  tr
  202.               command  or the figlet -D option.  figlet maintains
  203.               a list of controlfiles, which is empty when  figlet
  204.               starts  up.   -C  adds the given controlfile to the
  205.               list.  -N clears the controlfile  list,  cancelling
  206.               the effect of any previous -C.  figlet executes the
  207.               commands in all controlfiles in the list.  See CON-
  208.               TROLFILE  FORMAT for details on how to write a con-
  209.               trolfile.
  210.  
  211.  
  212.        -m smushmode
  213.               Specifies how figlet should ``smush'' and kern con-
  214.               secutive characters together.  On the command line,
  215.               -m0 can be useful, as it tells figlet to kern char-
  216.               acters  without smushing them together.  Otherwise,
  217.               this option is rarely needed, as a figlet font file
  218.               specifies  the best smushmode to use with the font.
  219.               -m is, therefore, most  useful  to  font  designers
  220.               testing  the  various  smushmodes  with their font.
  221.               smushmode can be -2 through 63.
  222.  
  223.               -2 Get mode from font file (default).
  224.                      Every figlet font file  specifies  the  best
  225.                      smushmode  to  use with the font.  This will
  226.                      be one of the  smushmodes  (-1  through  63)
  227.                      described in the following paragraphs.
  228.  
  229.               -1 No smushing or kerning.
  230.                      Characters are simply concatenated together.
  231.  
  232.               0 Kern only.
  233.                      Characters are pushed  together  until  they
  234.                      touch.
  235.  
  236.                      In  any  non-negative smushmode figlet kerns
  237.                      adjacent font characters,  i.e.,  it  pushes
  238.                      adjacent   font  characters  together  until
  239.                      their non-blank  portions  touch.   At  that
  240.                      point,  it  may or may not push the two font
  241.                      characters  1   screen   character   closer,
  242.                      depending  on  the  smushmode.  Pushing font
  243.                      characters one step closer requires ``smush-
  244.                      ing'' two non-blank screen characters into a
  245.                      single screen character.  figlet has 6  ways
  246.                      of doing this, represented by 1, 2, 4, 8, 16
  247.                      and 32.  The various non-negative smushmodes
  248.                      (0-63) are obtained by adding up the numbers
  249.                      corresponding to the sort of smushing figlet
  250.                      should  do.  In particular smushmode 0 kerns
  251.                      characters without smushing them  into  each
  252.                      other.
  253.  
  254.               1 Smush equal characters.
  255.                      Two  screen  characters  are  smushed into a
  256.                      single character if they are the same.   The
  257.                      resulting  character  is the same as both of
  258.                      the original characters.  This mode does not
  259.                      smush  the  character  known as a hardblank,
  260.                      which is a character that prints as a blank,
  261.                      but is not smushed (except in mode 32).  See
  262.                      FONT FILE FORMAT  for  more  information  on
  263.                      hardblanks.
  264.  
  265.               2 Smush underscores.
  266.                      An  underscore  will  be  smushed  into (and
  267.                      replaced by) any of ``|/\[]{}()<>''.
  268.  
  269.               4 Hierarchy smushing.
  270.                      Smushes certain characters together  accord-
  271.                      ing  to  a  hierarchy  containing 6 classes:
  272.                      ``|'',  ``/\'',  ``[]'',   ``{}'',   ``()'',
  273.                      ``<>''.   A  member  of  any  class  can  be
  274.                      smushed into and replaced by a member of any
  275.                      later class.
  276.  
  277.               8 Opposite pair smushing, type I.
  278.                      Smushes  opposing  brackets (``[]''), braces
  279.                      (``{}'') and parentheses (``()'')  together,
  280.                      replacing them with a vertical bar (`|').
  281.  
  282.               16 Opposite pair smushing, type II.
  283.                      Smushes   opposing   slashes   (``/\'')  and
  284.                      greater-than/less-than  (``><'')   together,
  285.                      replacing   them  with  an  upper-case  `X'.
  286.                      ``><'' are only smushed together  when  they
  287.                      are  in that order, i.e., ``<>'' will not be
  288.                      smushed.
  289.  
  290.               32 Hardblank smushing.
  291.                      Smushes two hardblanks  together,  replacing
  292.                      them with a single hardblank.  See FONT FILE
  293.                      FORMAT for more information on hardblanks.
  294.  
  295.  
  296.        -v
  297.        -I infocode
  298.               These  options  print  various  information   about
  299.               figlet, then exit.  If several of these options are
  300.               given on the command line, only the  last  is  exe-
  301.               cuted,   and  only  after  all  other  command-line
  302.               options have been dealt with.
  303.  
  304.               -v prints version  and  copyright  information,  as
  305.               well  as  a  ``Usage:  ...''   line.  -I prints the
  306.               information corresponding to the given infocode  in
  307.               a  consistent, reliable (i.e., guaranteed to be the
  308.               same in future releases) format.  -I  is  primarily
  309.               intended  to  be  used by programs that use figlet.
  310.               infocode can be any of the following.
  311.  
  312.               -1 Normal operation (default).
  313.                      This infocode indicates that  figlet  should
  314.                      operate    normally,    not    giving    any
  315.                      informational printout, printing  its  input
  316.                      in the selected font.
  317.  
  318.               0 Version and copyright.
  319.                      This is identical to -v.
  320.  
  321.               1 Version (integer).
  322.                      This  will print the version of your copy of
  323.                      figlet as a decimal integer.  The main  ver-
  324.                      sion number is multiplied by 10000, the sub-
  325.                      version number is multiplied by 100, and the
  326.                      sub-sub-version  number  is multiplied by 1.
  327.                      These are added together, and the result  is
  328.                      printed  out.   For example, figlet 2.1 will
  329.                      print ``20100''.  If there is ever a version
  330.                      2.1.1,  it will print ``20101''.  Similarly,
  331.                      version 3.7.2 would print ``30702''.   These
  332.                      numbers are guaranteed to be ascending, with
  333.                      later versions having higher numbers.   Note
  334.                      that the first major release of figlet, ver-
  335.                      sion 2.0, did not have the -I option.
  336.  
  337.               2 Default font directory.
  338.                      This will print the default font  directory.
  339.                      It is affected by the -d option.
  340.  
  341.               3 Font.
  342.                      This  will print the name of the font figlet
  343.                      would use.  It is affected by the -f option.
  344.                      This  is not a filename; the ``.flf'' suffix
  345.                      is not printed.
  346.  
  347.               4 Output width.
  348.                      This will print the value figlet  would  use
  349.                      for  outputwidth, the number of columns wide
  350.                      figlet  assumes  the  screen  is.    It   is
  351.                      affected by the -w and -t options.
  352.  
  353.               If  infocode  is  any  other positive value, figlet
  354.               will simply exit without printing anything.
  355.  
  356.  
  357.        -L
  358.        -R
  359.        -X     These options control whether figlet  prints  left-
  360.               to-right  or  right-to-left.   -L  selects left-to-
  361.               right printing.  -R selects right-to-left printing.
  362.               -X  (default)  makes figlet use whichever is speci-
  363.               fied in the font file.
  364.  
  365.  
  366. EXAMPLES
  367.        To use figlet with its default settings, simply type
  368.  
  369.               example% figlet
  370.  
  371.        and then type whatever you like.
  372.  
  373.        To change the font, use the -f option, for example,
  374.  
  375.               example% figlet -f script
  376.  
  377.  
  378.        Use the -c option if you would prefer centered output:
  379.  
  380.               example% figlet -c
  381.  
  382.  
  383.        We have found that the most common use of figlet is making
  384.        up  large  text to be placed in e-mail messages.  For this
  385.        reason, figlet defaults to 80 column output.  If  you  are
  386.        using  a  wider terminal, and would like figlet to use the
  387.        full width of your terminal, use the -t option:
  388.  
  389.               example% figlet -t
  390.  
  391.  
  392.        If you don't want figlet to  smush  font  characters  into
  393.        each other, use the -m0 option:
  394.  
  395.               example% figlet -m0
  396.  
  397.  
  398.        If  figlet  gets its input from a file, it is often a good
  399.        idea to use -p:
  400.  
  401.               example% figlet -p < myfile
  402.  
  403.  
  404.        Of course, the above can be combined:
  405.  
  406.               example% figlet -ptm0 -f shadow < anotherfile
  407.               example% figlet -cf slant
  408.  
  409.  
  410.  
  411.    Other Things to Try
  412.        On many systems nice effects can be obtained from the lean
  413.        font  by piping it through tr.  Some you might want to try
  414.        are the following:
  415.  
  416.               example% figlet -f lean | tr ' _/' ' ()'
  417.               example% figlet -f lean | tr ' _/' './\\'
  418.               example% figlet -f lean | tr ' _/' ' //'
  419.               example% figlet -f lean | tr ' _/' '/  '
  420.  
  421.        Similar things can be done with the block font and many of
  422.        the other figlet fonts.
  423.  
  424.  
  425. FONT FILE FORMAT
  426.        If  you  would like to design a figlet font, it is usually
  427.        best to begin with an already-existing font.   Except  for
  428.        the  first  line  of  a font file, most of the file format
  429.        should be obvious.  If you design a font,  please  let  us
  430.        know about it!  (See AUTHORS for e-mail addresses.)
  431.  
  432.        A figlet font filename must have the suffix ``.flf''.
  433.  
  434.        A  figlet font file begins with a header.  The header con-
  435.        sists of one line giving information about the font,  fol-
  436.        lowed by zero or more comment lines, which figlet ignores.
  437.        Following the header is the font data.
  438.  
  439.  
  440.    The Header
  441.        The first line of a figlet font file is of  the  following
  442.        form:
  443.  
  444.               flf2ahardblank height up_ht maxlen smushmode cmt_count rtol
  445.  
  446.        where  hardblank  is a character, and the remaining values
  447.        are integers, for example:
  448.  
  449.               flf2a$ 6 5 20 15 3 0
  450.  
  451.        The last value, rtol, may be omitted, in which case it  is
  452.        assumed to be 0.
  453.  
  454.               flf2a$ 6 5 20 15 3
  455.  
  456.  
  457.        For  those  desiring  a  quick explanation, the above line
  458.        indicates that this font has characters which are 6  lines
  459.        tall,  5  of  which are above the baseline, no line in the
  460.        font data is more than 20  characters  long,  the  default
  461.        smushmode  is  15  (kern and smush in various ways), there
  462.        are 3 comment lines, and this font is to be printed  left-
  463.        to-right.  More in-depth explanations follow.
  464.  
  465.        The  first  five  characters  of  a  font  file  should be
  466.        ``flf2a''.  ``flf2'' is the magic number  of  a  figlet  2
  467.        font file.  The next character (`a') is currently ignored.
  468.        It may mean something in future versions of figlet.  If it
  469.        does,  you  can be sure your fonts will still work if this
  470.        character is `a'.
  471.  
  472.        Immediately following this is the  hardblank  (character).
  473.        Note  that  there  are no blanks between ``flf2a'' and the
  474.        hardblank.  figlet can smush together consecutive  charac-
  475.        ters  in  various  ways.   Normally,  any character can be
  476.        smushed into a blank.  A hardblank prints as a blank,  but
  477.        cannot  be smushed into any character except a blank, and,
  478.        if smushmode  32  is  enabled,  another  hardblank.   (For
  479.        example,  the  `r' in script.flf contains a hardblank, `$'
  480.        in that font.  To see why this is necessary, create a copy
  481.        of script.flf with this hardblank replaced by a blank.  In
  482.        this new font, the ``tr'' combination looks awful.)
  483.  
  484.        By convention, the hardblank is a `$', but it can  be  any
  485.        character  besides  blank,  newline and null.  If you want
  486.        the entire printing ASCII set available to use,  make  the
  487.        hardblank a <delete> character.
  488.  
  489.        Then  comes  the  height (integer).  This is the number of
  490.        screen lines high that each character in the font is.
  491.  
  492.        up_ht (integer) is the number of lines from  the  baseline
  493.        of  a  character  to the top of the character, i.e., it is
  494.        the height of a character, ignoring any descenders.   This
  495.        number is currently ignored by figlet, but future versions
  496.        may use it.
  497.  
  498.        maxlen (integer) is the maximum length of a  line  in  the
  499.        font  file  (excluding  the  first  line  and the comments
  500.        lines, which can be as long as you want).  You may want to
  501.        make this a little too large as a safety measure.
  502.  
  503.        smushmode (integer) determines how much figlet smushes the
  504.        font.  Possible smushmodes are -1 through 63.   Typically,
  505.        you'll  want to use 0 (kern font characters without smush-
  506.        ing them together), -1 (no  kerning  or  smushing)  or  15
  507.        (smush  various  pairs  of characters together into single
  508.        characters).  To try out different  smushmodes  with  your
  509.        font,  use  the -m command-line option.  See OPTIONS for a
  510.        more detailed explanation of these smushmodes.  (Note that
  511.        a  smushmode  of  -2 can be given on the command line, but
  512.        not in a font file.)
  513.  
  514.        Between the first line and the actual  characters  of  the
  515.        font  are the comment lines.  Cmt_count specifies how many
  516.        lines there are.  These lines are optional, may be as long
  517.        as you want, and are ignored by figlet.
  518.  
  519.        rtol  (integer)  tells  which  direction the font is to be
  520.        printed.  0 means left-to-right,  and  1  means  right-to-
  521.        left.    Left-to-right   text  is  printed  flush-left  by
  522.        default, while right-to-left text is  printed  flush-right
  523.        by  default.   rtol may be omitted, in which case 0 (left-
  524.        to-right) is assumed.  Earlier versions of  figlet  (i.e.,
  525.        version 2.0) ignore rtol.
  526.  
  527.        Thus,  a  complete figlet font file header will look some-
  528.        thing like the following:
  529.  
  530.               flf2a$ 6 5 20 15 3
  531.               Example by Glenn Chappell <ggc@uiuc.edu> 8/94
  532.               Permission is hereby given to modify this font, as long as the
  533.               modifier's name is placed on a comment line.
  534.  
  535.  
  536.    The Font Data
  537.        The font data begins on the next line after  the  comments
  538.        and continues to the end of the file.  The characters from
  539.        ` ' to `~' are given in standard ASCII order, followed  by
  540.        the  extra German characters: umlauted `A', `O', `U', `a',
  541.        `o' and `u' and s-z.  Following  these  are  the  optional
  542.        code-tagged characters.  Each character uses height lines,
  543.        where height was given on the first line of the font file.
  544.        Each  code-tagged  character is preceeded by an extra line
  545.        with the character's code (a number) on it.   The  charac-
  546.        ters  in  the  file  are  given  exactly as they should be
  547.        printed out, with two exceptions: (1) hardblanks should be
  548.        the  hardblank  character, not a blank, and (2) every line
  549.        has an endmark character.
  550.  
  551.        In most figlet fonts, the endmark is either  `@'  or  '#'.
  552.        figlet  eliminates  the  last  block  of consecutive equal
  553.        characters from each line (other than  the  header  lines)
  554.        when the file is read in.  By convention, the last line of
  555.        a font character has 2 endmarks, while all the  rest  have
  556.        one.  This makes it easy to see where characters begin and
  557.        end.  No line should have more than 2 endmarks.
  558.  
  559.        The code-tagged characters are optional, and  are  ignored
  560.        by  earier  versions  of  figlet (i.e., version 2.0).  The
  561.        code-tagged characters begin just after the German charac-
  562.        ters.   There  can  be  as  many or as few of these as you
  563.        like.  The first line of a  code-tagged  character  has  a
  564.        single  number  on  it, the character's code, which is the
  565.        number by which figlet will refer to it.  This number  can
  566.        be  in  decimal,  octal or hexadecimal, using the standard
  567.        scanf conventions for such numbers.  On the next line  the
  568.        character  itself  begins,  in  the same format as the un-
  569.        tagged characters.
  570.  
  571.        If two or more font characters have the same tag, the last
  572.        one  in  the  font is the one used.  For this purpose, the
  573.        normal ASCII characters are considered to have tags  equal
  574.        to  their  ASCII  value,  while  the German characters are
  575.        given tags -255 through -249.
  576.  
  577.        There is no required encoding for the code-tagged  charac-
  578.        ters.   figlet  simply prints the character with the given
  579.        code when it is told to.  However, in most of  the  fonts,
  580.        we have used ISO Latin-1 for characters 160-255, following
  581.        a suggestion of Zhahai  Stewart.   Stewart  has  suggested
  582.        using Unicode for other characters.
  583.  
  584.        The zero tag is treated specially.  It is figlet's ``miss-
  585.        ing character''.  Whenever figlet is told to print a char-
  586.        acter  which  doesn't  exist  in the current font, it will
  587.        print character zero.  If character  zero  doesn't  exist,
  588.        nothing will be printed.
  589.  
  590.  
  591.    Notes
  592.        It  is  very  important that every character in a font has
  593.        the same height, and, once the endmarks are removed,  that
  594.        all  the  lines  constituting a single font character have
  595.        the same length.  Be careful also that  no  lines  in  the
  596.        font  file have trailing blanks, as figlet will take these
  597.        to be the endmarks.  Many problems like these can be found
  598.        easily using chkfont, part of the standard figlet package,
  599.        and also available, as of this writing, by  anonymous  FTP
  600.        from ftp.isu.edu:pub/figlet/util.
  601.  
  602.        If  you  don't want to define all the characters, make the
  603.        undefined characters empty, i.e., each line of the charac-
  604.        ter should consist only of one or two endmarks.
  605.  
  606.        The  blank  character  should  usually be made entirely of
  607.        hardblanks.  (Most  slanted  fonts  are  an  exception  to
  608.        this.)
  609.  
  610.        If  you  design a font, it is helpful if you put your name
  611.        and an e-mail address on a  comment  line.   If  you  will
  612.        allow  others  to modify your font, you may want to say so
  613.        on a comment line.
  614.  
  615.        If a font contains a non-Roman alphabet  stored  in  loca-
  616.        tions normally taken by ASCII, we have found it helpful to
  617.        include a ``translation'' table as one of  the  characters
  618.        of  the  font.   Typically, the ``~'' character contains a
  619.        list of all the special characters in the font, along with
  620.        the  ASCII  characters  they  correspond to.  It is a good
  621.        idea to keep this table no  more  than  79  columns  wide.
  622.        (Thanks to Gedaliah Friedenberg for this idea.)
  623.  
  624.        Again, if you design a font, please let us know!
  625.  
  626.  
  627. CONTROLFILE FORMAT
  628.        (Note: This section isn't terribly well-written.  I really
  629.        don't have time right now to do much with it.  If you want
  630.        to  write  a  controlfile, just look at the existing files
  631.        and ignore the f command, and you'll  probably  do  pretty
  632.        well.    Anyone   needing  extra  help  can  write  us  at
  633.        <figlet@uiuc.edu>.  Also, anyone willing  to  revise  this
  634.        section  or  the FONT FILE FORMAT section is welcome to do
  635.        so.  Please let us know about your efforts if you give  it
  636.        a try.  -GGC-)
  637.  
  638.  
  639.        Controlfiles  are  files containing lists of commands that
  640.        figlet  executes  each  time  it  reads  a  character.   A
  641.        controlfile  is  specified  to figlet using the -C command
  642.        line option (see OPTIONS).  In the file itself  the  first
  643.        line  identifies the file as a figlet controlfile, and the
  644.        remaining lines are the  commands,  one  per  line.   Cur-
  645.        rently, the only recognized commands tell figlet to trans-
  646.        late one character to another (similar to the Unix tr com-
  647.        mand).  In future versions of figlet, more commands may be
  648.        added.  As with font files, when writing a controlfile, it
  649.        is usually best to begin with an existing file.
  650.  
  651.        The  filename of a figlet controlfile must have the suffix
  652.        ``.flc''.
  653.  
  654.        The first five  characters  of  a  controlfile  should  be
  655.        ``flc2a''.   ``flc2'' is the magic number of a figlet con-
  656.        trolfile.  The next character (`a') is currently  ignored.
  657.        It may mean something in future versions of figlet.  If it
  658.        does, you can be sure your files will still work  if  this
  659.        character is `a'.
  660.  
  661.        Each of the following lines of the file consists of a one-
  662.        character command followed by whatever parameters the com-
  663.        mand  requires,  excepting blank lines, which are ignored.
  664.        There are currently three recognized commands: #, t and f.
  665.  
  666.  
  667.        # comment
  668.               Any line beginning with # is ignored.
  669.  
  670.  
  671.        t translate
  672.               This is similar to the Unix tr command.  It directs
  673.               figlet to ``translate'' one character  to  another.
  674.               ``t''  is followed by one or more blanks, then by a
  675.               character (or range of characters,  e.g.,  ``A-Z'')
  676.               then one or more blanks, then another character (or
  677.               range).
  678.  
  679.               For example,
  680.  
  681.                      t # $
  682.  
  683.               will convert `#' to `$', while
  684.  
  685.                      t A-Z a-z
  686.  
  687.               will convert upper-case ASCII to lower-case  ASCII.
  688.               A  range should always be followed by another range
  689.               of the same size.
  690.  
  691.               A number of backslash (`\') options  are  available
  692.               for  specifying  characters.   Any  of the standard
  693.               ``C'' language backslash-character conventions  are
  694.               legal,   e.g.,  ``\n''  for  newline,  etc.   Also,
  695.               backslash-blank can be  used  to  specify  a  blank
  696.               character.   Backslash  followed by a number in any
  697.               of the standard scanf formats  (decimal,  octal  or
  698.               hexadecimal) specifies the character with the given
  699.               code.  For example,
  700.  
  701.                      t \n-\  \65-W
  702.  
  703.               will convert all characters from newline  to  blank
  704.               into  the  corresponding characters from `A' to `W'
  705.               (`A' has code 65).
  706.  
  707.               If a number of consecutive t  commands  are  given,
  708.               then  for  each  character  input,  only  the first
  709.               applicable command, if any, will be executed.  As a
  710.               result,
  711.  
  712.                      t A B
  713.                      t B A
  714.  
  715.               will  swap  the  characters `A' and `B'.  If figlet
  716.               reads an `A' the first command will change  `A'  to
  717.               `B', in which case the second will not be executed.
  718.               In the following list,
  719.  
  720.                      t A B
  721.                      t A C
  722.  
  723.               the second command is never executed.  In short,  a
  724.               sequence of t commands ``does what it ought to''.
  725.  
  726.  
  727.        f freeze
  728.               More  complex files, in which a single character is
  729.               acted upon by several t commands,  can  be  set  up
  730.               using  the  f  command.   f ``freezes'' the current
  731.               character, executing the remaining commands in  the
  732.               controlfile  as  if  they  were in a separate file.
  733.               The f command has no parameters, and anything  fol-
  734.               lowing  it  on the same line is ignored.  (Note: If
  735.               you, along with so many others, cannot  figure  out
  736.               what  the  f  command does, or why anyone would use
  737.               it, feel free to ignore it.)  After figlet executes
  738.               a  t command, it skips to the end of the file or to
  739.               the next f command.  If any t commands follow,  the
  740.               first  applicable one will be executed.  The result
  741.               is that f  acts  as  a  ``freeze'',  executing  the
  742.               remaining  commands  as  if they were in a separate
  743.               file.
  744.        file.flf            figlet font file
  745.  
  746.  
  747. DIAGNOSTICS
  748.        figlet's diagnostics are intended to be  self-explanatory.
  749.        Possible messages are
  750.  
  751.               Usage: ...
  752.               Out of memory
  753.               Unable to open font file
  754.               Not a figlet 2 font file
  755.               Unable to open control file
  756.               Not a figlet 2 control file
  757.               "-t" is disabled, since ioctl is not fully implemented.
  758.  
  759.        This  last message is printed when the -t option is given,
  760.        but the operating system in use does not include the  sys-
  761.        tem call figlet uses to determine the terminal width.
  762.  
  763.        figlet also prints an explanatory message if the -F option
  764.        is given on the command  line.   The  earlier  version  of
  765.        figlet,  version  2.0, listed the available fonts when the
  766.        -F option was given.  This option has  been  removed  from
  767.        figlet  2.1.   It has been replaced by the figlist script,
  768.        which is part of the standard figlet package.
  769.  
  770.  
  771. ORIGIN
  772.        ``figlet'' stands for ``Frank, Ian and Glenn's  LETters''.
  773.        Inspired  by  Frank's  .sig, Glenn wrote (most of) it, and
  774.        Ian helped.
  775.  
  776.        Most of the standard figlet fonts were inspired by  signa-
  777.        tures  on  various  UseNet articles.  Since typically hun-
  778.        dreds of people use the same style  of  letters  in  their
  779.        signatures,  it  was  often  not  deemed necessary to give
  780.        credit to any one font designer.
  781.  
  782.  
  783. BUGS
  784.        Very little error checking is done  on  font  and  control
  785.        files.   While figlet tries to be forgiving of errors, and
  786.        should (hopefully) never actually crash, using an  improp-
  787.        erly-formatted file with figlet will produce unpredictable
  788.        output.
  789.  
  790.        figlet does not handle formatting  characters  in  a  very
  791.        intelligent way.  A tab character is converted to a blank,
  792.        and vertical-tab, form-feed and carriage-return  are  each
  793.        converted to a newline.  On many systems, tabs can be han-
  794.        dled better by piping files through expand  before  piping
  795.        through figlet.
  796.  
  797.        figlet  output  is  quite  ugly  if  it  is displayed in a
  798.        proportionally-spaced font.   I  suppose  this  is  to  be
  799.        expected.
  800.  
  801.  
  802. AUTHORS
  803.        Glenn  Chappell  <ggc@uiuc.edu> did most of the work.  You
  804.        can e-mail him but he is not an e-mail fanatic; people who
  805.        e-mail  Glenn will probably get answers, but if you e-mail
  806.        his best friend:
  807.  
  808.        Ian Chai <spectre@uiuc.edu>, who  is  an  e-mail  fanatic,
  809.        you'll get answers, endless conversation about the myster-
  810.        ies of life, invitations to join some  473  mailing  lists
  811.        and  a  free  toaster.   (Well,  ok,  maybe  not  the free
  812.        toaster.)
  813.  
  814.        Frank inspired this whole project with his .sig, but don't
  815.        e-mail him; he's decidedly an un-e-mail-fanatic.
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855. v2.1                       12 Aug 1994                         15
  856.  
  857.  
  858.